1. Field of the Invention
The present invention relates to communication systems, in particular, wideband code division multiple access (W-CDMA) systems with turbo coding.
2. Description of the Related Art
Code Division Multiple Access (CDMA) is a channel access method used by radio communication technologies. CDMA enables signals to be multiplexed over the same channel by assigning each transmitter a code. The data bits are combined with a code so that the signal can only be intercepted by a receiver whose frequency response is programmed with the same code. The code changes at the chipping rate which is much faster than the original sequence of data bits. The result of combining the data signal with the code is a spread spectrum signal that resists interference and enables the original data to be recovered if the original data bits are damaged during transmission. CDMA technology optimizes the use of available bandwidth, and is used in communications such as ultra-high frequency cellular telephone systems.
Wideband CDMA (W-CDMA) is an International Telecommunications Standard (ITU) derived from CDMA technology. The code in W-CDMA technology is a wideband spread signal. W-CDMA is found in communications such as 3G mobile telecommunications networks. W-CDMA transmits on a pair of 5 MHz-wide carrier channels, whereas narrowband CDMA transmits on 200 kHz-wide channels. W-CDMA has been developed into a complete set of specifications. Specifically, details on W-CDMA multiplexing, channel coding and interleaving are described in “3rd Generation Partnership Project (3GPP); Technical Specification Group Radio Access Network; Multiplexing and channel coding (FDD) (3GPP TS 25.212)”, hereinafter referred to as “3GPP TS 25.212”. 3GPP TS 25.212 defines turbo coding schemes and an interleaving algorithm.
In general, turbo coding encodes a packet of traffic data to generate a packet of code bits. Turbo codes often systematically generate redundant data to messages, allowing a receiver (e.g., a base station or cellular handset) to detect and correct errors in a message without the need to ask the sender for additional data. Turbo codes might rely on an interleaver to receive input data, shuffle or re-order the input data, and provide the shuffled data as output data. Interleavers are employed in many wireless communication systems to reduce the impact of noise and interference on performance. For example, channel interleaving is commonly utilized to protect against a burst of errors due to noise and interference. At a transmitter, a channel interleaver shuffles code bits from a channel encoder so that consecutive code bits are spread apart in the interleaved bits. When a sequence of interleaved bits is involved in a burst of errors, these interleaved bits are spread apart after the complementary reshuffling by a channel de-interleaver at a receiver. Thus, interleaving breaks temporal correlation between successive bits involved in a burst of errors, which may improve overall system performance.
Section 4.2.3.2.3 of 3GPP TS 25.212 describes a Turbo code internal interleaver. The described interleaver consists of bits input into a rectangular matrix with padding. The interleaver consists of intra-row and inter-row permutations of the rectangular matrix. The output of the Turbo code interleaver is the bit sequence read out column by column from the intra-row and inter-row permutated rectangular matrix. The output is pruned by deleting dummy bits that were padded to the input of the rectangular matrix before intra-row and inter-row permutations. The interleaver might be implemented directly as described in the specification document, and the interleaver might be implemented using a pre-calculated interleaving table for each different length of input bits. Implementing the interleaver directly as described in the specification document consumes a lot of computing resources and might create real-time problems. Moreover, using interleaving lookup tables for each possible input length creates a large amount of pre-calculated data, resulting in large memory consumption.